From 9ce92d7114a910ffa57b0e62c50777991a65fd15 Mon Sep 17 00:00:00 2001 From: "kaf24@scramble.cl.cam.ac.uk" Date: Thu, 25 Nov 2004 22:09:38 +0000 Subject: [PATCH] bitkeeper revision 1.1159.187.19 (41a65822miLPeexZ6MOkyk4Usl-Rpw) Fix multicall preemption. --- xen/common/multicall.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/xen/common/multicall.c b/xen/common/multicall.c index dfe5e8d691..04605ebb2a 100644 --- a/xen/common/multicall.c +++ b/xen/common/multicall.c @@ -52,9 +52,15 @@ long do_multicall(multicall_entry_t *call_list, unsigned int nr_calls) if ( hypercall_preempt_check() ) { - /* If the sub-call wasn't preempted, skip over it. */ + /* + * Copy the sub-call continuation if it was preempted. + * Otherwise skip over the sub-call entirely. + */ if ( !test_bit(_MCSF_call_preempted, &mcs->flags) ) i++; + else + (void)__copy_to_user(&call_list[i], &mcs->call, + sizeof(*call_list)); /* Only create a continuation if there is work left to be done. */ if ( i < nr_calls ) -- 2.30.2